Amazon OpenSearch Service と Amazon OpenSearch Serverless が TLS 1.3 をサポートしていたので有効化方法や注意点などを確認してみた
いわさです。
最近 AWS サービスの TLS 1.3 対応状況などを確認することが多いのですが、Amazon OpenSearch Service と Amazon OpenSearch Serverless もエンドポイントで TLS 1.3 がサポートされるアップデートがありました。
OpenSearch Service は 1 月に、OpenSearch Serverless は 2 月にサポートされています。
同時に、アップデートアナウンスでは Perfect Forward Secrecy (PFS) もサポートされたと記述されています。
TLS 1.3 では PFS が必須なので必然的にサポートされたということが言いたいのかなと最初思ったのですが、セキュリティポリシーを設定してみたところどうやら TLS 1.2 についても推奨されている PFS 対応の暗号スイートのみが対象となるようです。
本日は OpenSearch Service と OpenSearch Serverless について実際の設定状況などを観察してみましたので紹介します。
OpenSearch Serverless は特に設定不要
まずは OpenSearch Serverless から確認してみます。
次のように新しい時系列コレクションを作成しました。
sslscan
コマンドを使用して、OpenSearch エンドポイントの TLS バージョン、暗号スイートについて確認してみます。
% sslscan https://kr0jlakfkpgndfo3xcd1.ap-northeast-1.aoss.amazonaws.com Version: 2.1.3 OpenSSL 3.2.1 30 Jan 2024 Connected to 52.192.104.146 Testing SSL server kr0jlakfkpgndfo3xcd1.ap-northeast-1.aoss.amazonaws.com on port 443 using SNI name kr0jlakfkpgndfo3xcd1.ap-northeast-1.aoss.amazonaws.com SSL/TLS Protocols: SSLv2 disabled SSLv3 disabled TLSv1.0 disabled TLSv1.1 disabled TLSv1.2 enabled TLSv1.3 enabled TLS Fallback SCSV: Server supports TLS Fallback SCSV TLS renegotiation: Session renegotiation not supported TLS Compression: OpenSSL version does not support compression Rebuild with zlib1g-dev package for zlib support Heartbleed: TLSv1.3 not vulnerable to heartbleed TLSv1.2 not vulnerable to heartbleed Supported Server Cipher(s): Preferred TLSv1.3 128 bits TLS_AES_128_GCM_SHA256 Curve 25519 DHE 253 Accepted TLSv1.3 256 bits TLS_AES_256_GCM_SHA384 Curve 25519 DHE 253 Accepted TLSv1.3 256 bits TLS_CHACHA20_POLY1305_SHA256 Curve 25519 DHE 253 Preferred TLSv1.2 128 bits ECDHE-RSA-AES128-GCM-SHA256 Curve 25519 DHE 253 Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-SHA256 Curve 25519 DHE 253 Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-GCM-SHA384 Curve 25519 DHE 253 Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-SHA384 Curve 25519 DHE 253 Server Key Exchange Group(s): TLSv1.3 128 bits secp256r1 (NIST P-256) TLSv1.3 192 bits secp384r1 (NIST P-384) TLSv1.3 260 bits secp521r1 (NIST P-521) TLSv1.3 128 bits x25519 TLSv1.2 128 bits secp256r1 (NIST P-256) TLSv1.2 192 bits secp384r1 (NIST P-384) TLSv1.2 260 bits secp521r1 (NIST P-521) TLSv1.2 128 bits x25519 SSL Certificate: Signature Algorithm: sha256WithRSAEncryption RSA Key Strength: 2048 Subject: *.ap-northeast-1.aoss.amazonaws.com Altnames: DNS:*.ap-northeast-1.aoss.amazonaws.com, DNS:collection.sgw.nrt.prod.aoss.searchservices.aws.dev, DNS:*.ap-northeast-1.es.amazonaws.com Issuer: Amazon RSA 2048 M03 Not valid before: Nov 14 00:00:00 2023 GMT Not valid after: Dec 12 23:59:59 2024 GMT
TLS 1.0 と TLS 1.1 が無効化されており、TLS 1.2 と TLS 1.3 が有効になっています。
また、PFS 対応の暗号スイートのみがサポートされていることも確認出来ました。
OpenSearch Serverless の場合はエンドポイント通信のセキュリティポリシーを設定する機能は無いので、特に設定は不要ですね。一方でレガシークライアントのサポートも出来ません。
OpenSearch Service は明示的に設定が必要
つづいて OpenSearch Service でも確認してみます。
次のようにデフォルト設定で構築した直後のドメインエンドポイントに対して、同じようにsslscan
を使ってみましょう。
% sslscan https://search-hoge0225service-gysmz54rip346skpplbhehtczq.aos.ap-northeast-1.on.aws Version: 2.1.3 OpenSSL 3.2.1 30 Jan 2024 Connected to 2406:da14:1761:e82:e4a0:da4c:2b18:f68 Testing SSL server search-hoge0225service-gysmz54rip346skpplbhehtczq.aos.ap-northeast-1.on.aws on port 443 using SNI name search-hoge0225service-gysmz54rip346skpplbhehtczq.aos.ap-northeast-1.on.aws SSL/TLS Protocols: SSLv2 disabled SSLv3 disabled TLSv1.0 enabled TLSv1.1 enabled TLSv1.2 enabled TLSv1.3 disabled TLS Fallback SCSV: Server supports TLS Fallback SCSV TLS renegotiation: Secure session renegotiation supported TLS Compression: OpenSSL version does not support compression Rebuild with zlib1g-dev package for zlib support Heartbleed: TLSv1.2 not vulnerable to heartbleed TLSv1.1 not vulnerable to heartbleed TLSv1.0 not vulnerable to heartbleed Supported Server Cipher(s): Preferred TLSv1.2 128 bits ECDHE-RSA-AES128-GCM-SHA256 Curve P-256 DHE 256 Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-SHA256 Curve P-256 DHE 256 Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-SHA Curve P-256 DHE 256 Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-GCM-SHA384 Curve P-256 DHE 256 Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-SHA384 Curve P-256 DHE 256 Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-SHA Curve P-256 DHE 256 Accepted TLSv1.2 128 bits AES128-GCM-SHA256 Accepted TLSv1.2 128 bits AES128-SHA256 Accepted TLSv1.2 128 bits AES128-SHA Accepted TLSv1.2 256 bits AES256-GCM-SHA384 Accepted TLSv1.2 256 bits AES256-SHA256 Accepted TLSv1.2 256 bits AES256-SHA Preferred TLSv1.1 128 bits ECDHE-RSA-AES128-SHA Curve P-256 DHE 256 Accepted TLSv1.1 256 bits ECDHE-RSA-AES256-SHA Curve P-256 DHE 256 Accepted TLSv1.1 128 bits AES128-SHA Accepted TLSv1.1 256 bits AES256-SHA Preferred TLSv1.0 128 bits ECDHE-RSA-AES128-SHA Curve P-256 DHE 256 Accepted TLSv1.0 256 bits ECDHE-RSA-AES256-SHA Curve P-256 DHE 256 Accepted TLSv1.0 128 bits AES128-SHA Accepted TLSv1.0 256 bits AES256-SHA Server Key Exchange Group(s): TLSv1.2 128 bits secp256r1 (NIST P-256) TLSv1.2 192 bits secp384r1 (NIST P-384) TLSv1.2 260 bits secp521r1 (NIST P-521) SSL Certificate: Signature Algorithm: sha256WithRSAEncryption RSA Key Strength: 2048 Subject: *.aos.ap-northeast-1.on.aws Altnames: DNS:*.aos.ap-northeast-1.on.aws, DNS:*.cell-01.aos.ap-northeast-1.on.aws Issuer: Amazon RSA 2048 M03 Not valid before: Oct 17 00:00:00 2023 GMT Not valid after: Nov 14 23:59:59 2024 GMT
おっと、TLS 1.0, TLS 1.1 が有効で、TLS 1.3 が無効になっていますね。
そうなのです。OpenSearch Service の場合は古いクライアントとの互換性を保つため、デフォルトはPolicy-Min-TLS-1-0-2019-07
が設定されます。このセキュリティポリシーでサポートされる TLS バージョンおよび暗号スイートが上記になります。
一方でレガシークライアントを考慮していると言っても非推奨の TLS バージョンがサポートされているため、Security Hub での検出対象でもあります。
上記記事にも記載されていますが、AWS CLI からupdate-domain-config
を使ってセキュリティポリシーを指定することが出来ます。
まずは上記記事のとおりPolicy-Min-TLS-1-2-2019-07
を指定してみましょうか。
% aws opensearch update-domain-config --domain-name hoge0225service --domain-endpoint-options TLSSecurityPolicy=Policy-Min-TLS-1-2-2019-07 % sslscan https://search-hoge0225service-gysmz54rip346skpplbhehtczq.aos.ap-northeast-1.on.aws Version: 2.1.3 OpenSSL 3.2.1 30 Jan 2024 Connected to 2406:da14:1761:e82:e4a0:da4c:2b18:f68 Testing SSL server search-hoge0225service-gysmz54rip346skpplbhehtczq.aos.ap-northeast-1.on.aws on port 443 using SNI name search-hoge0225service-gysmz54rip346skpplbhehtczq.aos.ap-northeast-1.on.aws SSL/TLS Protocols: SSLv2 disabled SSLv3 disabled TLSv1.0 disabled TLSv1.1 disabled TLSv1.2 enabled TLSv1.3 disabled TLS Fallback SCSV: Server supports TLS Fallback SCSV TLS renegotiation: Session renegotiation not supported TLS Compression: OpenSSL version does not support compression Rebuild with zlib1g-dev package for zlib support Heartbleed: TLSv1.2 not vulnerable to heartbleed Supported Server Cipher(s): Preferred TLSv1.2 128 bits ECDHE-RSA-AES128-GCM-SHA256 Curve P-256 DHE 256 Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-SHA256 Curve P-256 DHE 256 Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-GCM-SHA384 Curve P-256 DHE 256 Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-SHA384 Curve P-256 DHE 256 Accepted TLSv1.2 128 bits AES128-GCM-SHA256 Accepted TLSv1.2 128 bits AES128-SHA256 Accepted TLSv1.2 256 bits AES256-GCM-SHA384 Accepted TLSv1.2 256 bits AES256-SHA256 Server Key Exchange Group(s): TLSv1.2 128 bits secp256r1 (NIST P-256) TLSv1.2 192 bits secp384r1 (NIST P-384) TLSv1.2 260 bits secp521r1 (NIST P-521) SSL Certificate: Signature Algorithm: sha256WithRSAEncryption RSA Key Strength: 2048 Subject: *.aos.ap-northeast-1.on.aws Altnames: DNS:*.aos.ap-northeast-1.on.aws, DNS:*.cell-01.aos.ap-northeast-1.on.aws Issuer: Amazon RSA 2048 M03 Not valid before: Oct 17 00:00:00 2023 GMT Not valid after: Nov 14 23:59:59 2024 GMT
TLS 1.0と TLS 1.1が無効化されましたが、TLS 1.3 は使えないままですね。
新しいセキュリティポリシー「Policy-Min-TLS-1-2-PFS-2023-10」を使う
以下のドキュメントでは Policy-Min-TLS-1-2-2019-07
と Policy-Min-TLS-1-0-2019-07
の 2 つから設定可能なように記述されています。
しかし、AWS CLI のコマンドリファレンスでは新しいセキュリティポリシーであるPolicy-Min-TLS-1-2-PFS-2023-10
が追加されていることが確認出来ます。
Policy-Min-TLS-1-2-PFS-2023-10: TLS security policy that supports TLS version 1.2 to TLS version 1.3 with perfect forward secrecy cipher suites
このパラメータを使うことで有効化出来そうですね。試してみましょう。
% aws opensearch update-domain-config --domain-name hoge0225service --domain-endpoint-options TLSSecurityPolicy=Policy-Min-TLS-1-2-PFS-2023-10 % sslscan https://search-hoge0225service-gysmz54rip346skpplbhehtczq.aos.ap-northeast-1.on.aws Version: 2.1.3 OpenSSL 3.2.1 30 Jan 2024 Connected to 2406:da14:1761:e82:d3ec:363c:abda:7c7 Testing SSL server search-hoge0225service-gysmz54rip346skpplbhehtczq.aos.ap-northeast-1.on.aws on port 443 using SNI name search-hoge0225service-gysmz54rip346skpplbhehtczq.aos.ap-northeast-1.on.aws SSL/TLS Protocols: SSLv2 disabled SSLv3 disabled TLSv1.0 disabled TLSv1.1 disabled TLSv1.2 enabled TLSv1.3 enabled TLS Fallback SCSV: Server supports TLS Fallback SCSV TLS renegotiation: Session renegotiation not supported TLS Compression: OpenSSL version does not support compression Rebuild with zlib1g-dev package for zlib support Heartbleed: TLSv1.3 not vulnerable to heartbleed TLSv1.2 not vulnerable to heartbleed Supported Server Cipher(s): Preferred TLSv1.3 128 bits TLS_AES_128_GCM_SHA256 Curve 25519 DHE 253 Accepted TLSv1.3 256 bits TLS_AES_256_GCM_SHA384 Curve 25519 DHE 253 Accepted TLSv1.3 256 bits TLS_CHACHA20_POLY1305_SHA256 Curve 25519 DHE 253 Preferred TLSv1.2 128 bits ECDHE-RSA-AES128-GCM-SHA256 Curve 25519 DHE 253 Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-GCM-SHA384 Curve 25519 DHE 253 Server Key Exchange Group(s): TLSv1.3 128 bits secp256r1 (NIST P-256) TLSv1.3 192 bits secp384r1 (NIST P-384) TLSv1.3 260 bits secp521r1 (NIST P-521) TLSv1.3 128 bits x25519 TLSv1.2 128 bits secp256r1 (NIST P-256) TLSv1.2 192 bits secp384r1 (NIST P-384) TLSv1.2 260 bits secp521r1 (NIST P-521) TLSv1.2 128 bits x25519 SSL Certificate: Signature Algorithm: sha256WithRSAEncryption RSA Key Strength: 2048 Subject: *.aos.ap-northeast-1.on.aws Altnames: DNS:*.aos.ap-northeast-1.on.aws, DNS:*.cell-01.aos.ap-northeast-1.on.aws Issuer: Amazon RSA 2048 M03 Not valid before: Oct 17 00:00:00 2023 GMT Not valid after: Nov 14 23:59:59 2024 GMT
おー、TLS 1.3 が有効化されました。
さらに、TLS 1.2 の暗号スイートについても PFS 非対応のものがサポート対象から外れました。
TLS 1.2 を許容する想定で TLS 1.3 を念の為有効化しておくかと言った場合でも、サポートされる暗号スイートが変わるので、アクセスされるクライアントを考慮した上でセキュリティポリシーを更新するべきか考えたほうが良さそうですね。
さいごに
本日は Amazon OpenSearch Service と Amazon OpenSearch Serverless が TLS 1.3 をサポートしていたので有効化方法や注意点などを確認してみました。
Amazon OpenSearch Serverless については特に設定不要でした。というかコントロール出来ないです。お任せです。
一方で、Amazon OpenSearch Service についてはデフォルトでは有効化されておらず、むしろセキュリティ的にはちょっと弱い状態がデフォルトになっています。
新しいセキュリティポリシーを使うことで TLS 1.3 が使えたり TLS 1.2 でも推奨される PFS を強制化することが出来ますが、レガシークライアントをどう考慮するべきか検討した上でセキュリティポリシーの更新を行うのが良いですね。